#!/bin/bash

# static lib
cd src
rm -f *.o *.so *.a
# -g 加上调试信息  -c 编译目标为.o文件   -I 头文件搜索目录   -o 目标文件名称
g++ -g -c swap.cpp -I../include -o swap.o
# ar 静态库管理器，可以向静态库中增删改.o文件，此处rcs表示创建静态库并加入swap.o文件
ar rcs libswap_static.a swap.o

# so
# g++ -g -c swap.cpp -I../include -fPIC -o swap_so.o
# g++ -shared -o libswap.so swap_so.o
# 如上两行，可写为一行
g++ -g -c swap.cpp -I../include -fPIC -shared -o libswap_so.so

# bin 
# 编译可执行文件时，存在同名的静态库和动态库，默认使用动态库，若强制使用静态库，需要加上-static
cd ..
g++ main.cpp -Iinclude -Lsrc -lswap_so -o so.out
g++ main.cpp -Iinclude -Lsrc -lswap_static -o static.out

# run
export LD_LIBRARY_PATH=src:.:$LD_LIBRARY_PATH
./static.out
./so.out

